// JavaScript Document
/*DEFINICION DE FUNCIONES Y VARIABLES GLOBALES*/
	var misZonasHash = new Hashtable(); //hash de todas las zonas, accesible por id de la zona
	var misZonasMarkersHash = new Hashtable(); //hash con los Polygonos de las zonas (se van creando a medida que se hacen visibles)

	var zonasSeleccionadasId = new Array(); //Array con los ID de las zonas seleccionadas en los checkbox

	var misZonasVisiblesId = new Array(); //arreglo con los ID de las zonas visibles, se inicializa con la configuracion por defecto
	if (trim(ZONASVISIBLES_string)!='')
		misZonasVisiblesId = ZONASVISIBLES_string.split(",");

	var highlightZona= null; //Polyline NEGRA que se marca en los limites de las zonas para denotar su seleccion...
	var highlightZonaTimeOut = 0;
	function removeHighlightZonaMarker(){
		if (highlightZona){
			map.removeOverlay(highlightZona);
			highlightZona=null;
		}
	}

	function centrarNewZona(){
		if (newZonaShape!=null)
			centrarEnPoly(newZonaShape);
	}

	function highlightZonaMarker(idZona){
	  zona = misZonasMarkersHash.get(idZona.toString());
	  if ((zona==null)||(zona=='undefined'))
	  	zona = createZonaMarker(idZona);
	  polyPoints = new Array();
	  for(i=0; i< zona.getVertexCount();i++){
		  polyPoints[i] = zona.getVertex(i);
	  }
      if (highlightZona) {
        map.removeOverlay(highlightZona);
      }
      highlightZona = new GPolyline(polyPoints,"#000000",3,0.8);
      map.addOverlay(highlightZona);
	  centrarEnPoly(highlightZona);
	  clearTimeout(highlightZonaTimeOut);
	  highlightZonaTimeOut = setTimeout ( "removeHighlightZonaMarker();", 5000 );
    }

	function createPopUpZona(e, idZona, element){

	   PopUpMenuMap = new PopupMenu();
	   if (indexOfArray(misZonasVisiblesId,idZona.toString())!=-1){
		    PopUpMenuMap.add('Ocultar', function(target) {
		   		ocultarZona(idZona.toString());
	   		});
	 	    PopUpMenuMap.add('Localizar en el mapa', function(target) {
				highlightZonaMarker(idZona.toString());
	  	    });
	   }
	   else
	   		PopUpMenuMap.add('Ver', function(target) {
				mostrarZona(idZona.toString());
	  	    });

	   PopUpMenuMap.addSeparator();
	   PopUpMenuMap.add('Modificar', function(target) {
    	  modificarZona(idZona.toString());
	   });
	   PopUpMenuMap.add('Eliminar', function(target) {
	      eliminarZonas(idZona.toString());
	   });

	   if (OBJETIVO == 3){ //SE PUEDE PUBLICAR
	   	   PopUpMenuMap.addSeparator();
		   if (parseInt(misZonasHash.get(idZona.toString()).publico))
		   		PopUpMenuMap.add('Dejar de publicar', function(target) {
	      			publicarZonas(false, idZona.toString());
	   			});
	   	   else
	   			PopUpMenuMap.add('Publicar', function(target) {
	      			publicarZonas(true, idZona.toString());
	  			});
	   }

	   PopUpMenuMap.setSize(140, 0);
	   PopUpMenuMap.bind(element); // target is this pre block
	   PopUpMenuMap.show(e);
	   return false;
	   }

/*************************FUNCIONES PARA PANTALLA PRINCIPAL************************/

	var reqHandlerMisZonas = null;

	function ocultarZonasVisibles(){
		for (i=0; i<misZonasVisiblesId.length; i++){
			marker = misZonasMarkersHash.get(misZonasVisiblesId[i].toString());
			if ((marker!=null)&&(marker!='undefined')){
				marker.hide();
			}
		}
	}

	function mostrarZonasVisibles(){
		for (i=0; i<misZonasVisiblesId.length; i++){
			marker = misZonasMarkersHash.get(misZonasVisiblesId[i].toString());
			if ((marker!=null)&&(marker!='undefined')){
				marker.show();
			}
		}
	}

	function ocultarZona(idZona){
		pos=indexOfArray(misZonasVisiblesId,idZona.toString());
		if (pos!=-1)
			misZonasVisiblesId.splice(pos,1);
		refreshViewZonas();
	}

	function mostrarZona(idZona){
		misZonasVisiblesId.push(idZona.toString());
		refreshViewZonas();
	}

	function verZonasSeleccionadas(){
		misZonasVisiblesId = new Array();
		for (i=0; i<zonasSeleccionadasId.length;i++)
			misZonasVisiblesId[i] = zonasSeleccionadasId[i];
		refreshViewZonas();
	}

	function ocultarZonasSeleccionadas(){
		for (i=0;i<zonasSeleccionadasId.length;i++){
			pos=indexOfArray(misZonasVisiblesId,zonasSeleccionadasId[i].toString());
			if (pos!=-1)
				misZonasVisiblesId.splice(pos,1);
		}
		refreshViewZonas();
	}

    function drawZona(puntos, color) { //genera un poligon dado una lista de Puntos(GLatLng) y un color de fill
	    newZonaShape = new GPolygon(puntos, color, 1, 0.8, '#'+color, 0.3);
		area = newZonaShape.getArea()/(1000*1000);
		if(newZonaMarkers.length <= 2 ) {
		  document.getElementById('zonaArea').innerHTML="0 km&sup2;";
		}
		else if(newZonaMarkers.length > 2 ) {
		  document.getElementById('zonaArea').innerHTML=area.toFixed(3)+" km&sup2;";
		}
	    map.addOverlay(newZonaShape);
	}

	function createZonaMarker(idZona){ //crea y retorna una Marker Polyline dado un ID de una zona
		miZona = misZonasHash.get(idZona.toString());
		limites = new Array();
		for (var i=0; i<miZona.PUNTOSLAT.length; i++){
			limites[i]=new GLatLng(parseFloat(miZona.PUNTOSLAT[i]),parseFloat(miZona.PUNTOSLNG[i]));
			}
		marker = new GPolygon(limites, miZona.color, 1, 0.8, '#'+miZona.color, 0.3, {clickable:false});
		return marker;
	}

	function refreshViewZonas(){
		var misZonasList = misZonasHash.values();
		for (var i=0; i<misZonasList.length; i++) {
			if (misZonasList[i]!='toJSONString'){
				auxId = misZonasList[i].id.toString();
				marker = misZonasMarkersHash.get(auxId);
				if (indexOfArray(misZonasVisiblesId,auxId.toString())!=-1){ // Tiene que estar VISIBLE
					if ((marker == null)||(marker=='undefined')){//creo la marca del punto
						misZonasMarkersHash.put(auxId.toString(),createZonaMarker(auxId.toString()));
						map.addOverlay(marker);
						}
					  marker.show();
					}
				else { //tiene que estar OCULTO
					if (marker != null){
					 	marker.hide();
						}
					}
				}
			}
		 printTableMisZonas();
	}

	function checkedZona(check, miZona){
		if (check.checked)
			zonasSeleccionadasId.push(check.value);
		else {
			pos=indexOfArray(zonasSeleccionadasId,check.value.toString());
			if (pos!=-1)
			    zonasSeleccionadasId.splice(pos,1);
			}
	}


	function printTableMisZonas(){
		tabla = '<table width="250">';
		var misZonasList=misZonasHash.values();
		for (var i=0; i<misZonasList.length; i++) {
			if (misZonasList[i]!='toJSONString'){
			checked = '';
			disabled = '';
			if (indexOfArray(zonasSeleccionadasId,misZonasList[i].id.toString())!=-1)
				checked='checked';
			if ((OBJETIVO==2)&&(misZonasList[i].esflota==1)){
				//es una zona de flota y soy movil no puedo hacer nada. Todas las zonas de flota estan VISIBLES y NO SELECCIONADAS
				checked='';
				disabled="disabled='true'";
			}

			tabla += '<tr oncontextmenu="return createPopUpZona(event,'+misZonasList[i].id+',this);">';
			tabla += '<td width="19">';
        	tabla += " <input type='checkbox' name='boxZones[]' value='"+misZonasList[i].id+"' "+checked+" "+disabled+" onClick='checkedZona(this);'>";
        	tabla += '</td>';
        	tabla += '<td width="16">';
			tabla += '  <div style="width:14px; height:14px; border:1px gray inset; background:#'+misZonasList[i].color+'"> </div>';
        	tabla += '</td>';
        	tabla += '<td>';
        	tabla += ' <span class="inputLBL">'+misZonasList[i].nombre+'</span>';
        	tabla += '</td>';
			tabla += '<td align="right">';
			//seccion de iconos de estado...
			tabla += '<table border="0" cellspace="1" cellpadding="0" height="18"><tr>';
			//PUBLICADO:
			tabla += '<td width="20" height="18" bgcolor="#EAEAEA" align="center" valign="middle">'
			if ((OBJETIVO==3)&&(misZonasList[i].publico==1)){
				tabla += '<img src="images/zonaPublica.gif" width="16" height="16" border="0" title="Zona publicada"/>';
				}
			tabla += '</td>';
			//VISIBILIDAD:
			tabla += '<td width="20" height="18" bgcolor="#EAEAEA" align="center" valign="middle">'
			if (indexOfArray(misZonasVisiblesId,misZonasList[i].id.toString())!=-1){
				tabla += '<img src="images/zonaVisible.gif" width="12" height="10" border="0" onclick="highlightZonaMarker('+misZonasList[i].id.toString()+');" style="cursor:pointer;" title="Zona visible (Click para localizar y centrar)"/>';
				}
			tabla += '</td>';
			tabla += '</tr></table>';
        	tabla += '</td>';
			tabla += '</tr>';
			}
		}
		tabla += '</table>';
		document.getElementById('divListaZonas').innerHTML = tabla;
	}

	function OnReadyStateChangeMisZonas(){
		ready = reqHandlerMisZonas.readyState;
		if (ready == READY_STATE_COMPLETE) {
			misZonasJSON = reqHandlerMisZonas.responseText.parseJSON();
			if (misZonasJSON.length != 'undefined') {
				for (i=0; i<misZonasJSON.length; i++){
					misZonasHash.put(misZonasJSON[i].id.toString(), misZonasJSON[i]);
				}
				refreshViewZonas();
				CargarReglas();
			}
		$j("#iconoMapa").removeClass().addClass("icono_mapa");
		autoRefreshFlag = 0;
		}
	}

	function CargarMisZonas() {
    	reqParamMisZonas = "COMMAND=MISZONAS";
    	reqParamMisZonas += "&CUENTA=" + MOVIL_ID;
		if (OBJETIVO == 3)
			reqParamMisZonas += "&ESFLOTA=1";
		else
			reqParamMisZonas += "&ESFLOTA=0";
    	document.getElementById("busyImg").style.visibility = "visible";
    	if (msie)
            reqHandlerMisZonas = new ActiveXObject("Microsoft.XMLHTTP");
        else
            reqHandlerMisZonas = new XMLHttpRequest();
        reqHandlerMisZonas.onreadystatechange = OnReadyStateChangeMisZonas;
        reqHandlerMisZonas.open("POST", "querycontroller.php", true);
        reqHandlerMisZonas.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		reqHandlerMisZonas.send(reqParamMisZonas);
    }


/*************************FUNCIONES PARA PANTALLA NUEVA ZONA************************/
	var newZonaShape = null;
	//var eventosNuevaZona = new Array();
	var isNewZona = true;

	var newZonaLineColor = "#414141";
	var newZonaPoints = new Array();
	var newZonaMarkers = new Array();

	function zonaChangeColor(newColor){
		document.getElementById('colorZonaText').color.hidePicker();
		if (newZonaShape!=null){
			drawNewZona();
		}
	}

	function clearNewZona() {
		// Remueve el poligono (zona) del mapa y resetea los arrays
		if (newZonaShape!=null){
			map.removeOverlay(newZonaShape);
			newZonaShape=null;
			for (i=0; i<newZonaMarkers.length; i++)
				map.removeOverlay(newZonaMarkers[i]);
			newZonaMarkers.length = 0;
			newZonaPoints.length = 0;
		}
	}

	function nuevaZona() {
		//mostrar panel de nueva zona
		document.getElementById('newZonaTitle').innerHTML = "Nueva Zona";
		document.getElementById('newZonaDesc').innerHTML = "Haga clic en al menos en tres lugares diferentes del mapa para dibujar una zona. Los ángulos de la zona son arrastrables y extraíbles. Puede añadir más vértices simplemente haciendo 'click' derecho."
		hideDiv('div_miszonasPpal');
		showDiv('div_nuevaZona');
		setEstadoNuevaZona();
		cleanFormNuevaZona();
		newZonaPoints = new Array();
	    newZonaMarkers = new Array();
		isNewZona = true;
		newZonaShape = null;
	}

	function cleanEstadoNuevaZona(){ //limpia el mapa del estado "MARCAR NUEVA ZONA"
		initMapEvents();
		hideDiv('div_nuevaZona');
		showDiv('div_miszonasPpal');
		clearNewZona();
	}

	function setEstadoNuevaZona(){ //prepara el mapa para el estado "MARCAR NUEVA ZONA"
		mapEventsHandlers.put("click", GEvent.addListener(map,"click",zonaAddVertice));
		mapActiveCursor = 'crosshair';
		map.getDragObject().setDraggableCursor("crosshair");
	}


	function cleanFormNuevaZona(){
		hideDiv('newZonaErrorDisplay');
		document.getElementById("newZonaErrorDisplay").innerHTML = "";
		document.getElementById('zonaIdHID').value="";
		document.getElementById('zonaArea').innerHTML="0 km&sup2;";
		document.getElementById('descZona').value="";
		document.getElementById('nombreZona').value="";
		document.getElementById('colorZonaId').value=COLOR_DEFAULT_ZONA_GMAP;
		document.getElementById('colorZonaText').style.background='#'+COLOR_DEFAULT_ZONA_GMAP;
		if (OBJETIVO == 3)
			document.getElementById('zonaPublicaCHK').checked=false;
		clearNewZona();
	}


	function zonaAddVertice(overlay, point) {
	   if(point) {
	    // vertice marker icons
  		var vertice = new GIcon();
  		vertice.image = 'images/lastvertice.png';
		vertice.iconSize = new GSize(11, 11);
 	    vertice.dragCrossSize = new GSize(0, 0);
        vertice.shadowSize = new GSize(11, 11);
        vertice.iconAnchor = new GPoint(5, 5);

		// construir Markers draggables
		var markerVertice = new GMarker(point, {icon:vertice, draggable:true, bouncy:false, dragCrossMove:true});
		if (newZonaMarkers.length>0){
			map.removeOverlay(newZonaMarkers[newZonaMarkers.length-1]);
			(newZonaMarkers[newZonaMarkers.length-1]).getIcon().image = 'images/vertice.png';
			map.addOverlay(newZonaMarkers[newZonaMarkers.length-1]);
		}

	    newZonaMarkers.push(markerVertice);
	    map.addOverlay(markerVertice);

	    GEvent.addListener(markerVertice, "drag", function() {
		   drawNewZona();
		});

	    GEvent.addListener(markerVertice, "mouseover", function() {
		   markerVertice.setImage('images/verticeHover.png');
  		});

		GEvent.addListener(markerVertice, "mouseout", function() {
	  	   markerVertice.setImage('images/vertice.png');
		});

	    // Segundo click para remover el vertice
  		GEvent.addListener(markerVertice, "click", function() {
	     // Encontrar el vertice y removerlo
  		   for(var n = 0; n < newZonaMarkers.length; n++) {
			   if(newZonaMarkers[n] == markerVertice) {
    			map.removeOverlay(newZonaMarkers[n]);
			    break;
	   		   }
	  	   }
	       newZonaMarkers.splice(n, 1);
		   drawNewZona();
		  });

	    if (isNewZona)
	    	drawNewZona();
	    }
	}


	function drawNewZona() {
		if(newZonaShape) map.removeOverlay(newZonaShape);
 		newZonaPoints.length = 0;

	    for(i = 0; i < newZonaMarkers.length; i++) {
		  newZonaPoints.push(newZonaMarkers[i].getLatLng());
		}
	   // Cerrar la figura con la ultima linea o no...
	    newZonaPoints.push(newZonaMarkers[0].getLatLng());
	    newZonaShape = new GPolygon(newZonaPoints, newZonaLineColor, 1, 0.8, '#'+document.getElementById('colorZonaId').value, 0.3);
		area = newZonaShape.getArea()/(1000*1000);

		if(newZonaMarkers.length <= 2 ) {
		  document.getElementById('zonaArea').innerHTML="0 km&sup2;";
		}
		else if(newZonaMarkers.length > 2 ) {
		  document.getElementById('zonaArea').innerHTML=area.toFixed(3)+" km&sup2;";
		}
	    map.addOverlay(newZonaShape);
	}

	/*************************FUNCIONES PARA PANTALLA MODIFICAR ZONA************************/
	function modificarZona(idZona) {
		if (idZona!=null){
			//mostrar panel de nueva zona
			document.getElementById('newZonaTitle').innerHTML = "Modificar Zona";
			document.getElementById('newZonaDesc').innerHTML = "Para modificar la zona tenga en cuenta que los ángulos son arrastrables y extraíbles. Puede añadir más vértices haciendo 'click'. Tenga en cuenta que los nuevos vertices se uniran a partir del ultimo que ha sido creado."
			hideDiv('div_miszonasPpal');
			showDiv('div_nuevaZona');
			setEstadoNuevaZona();
			zonaModificar = misZonasHash.get(idZona.toString());
			clearNewZona();
			pos = indexOfArray(misZonasVisiblesId, zonaModificar.id.toString());
			if (pos!=-1) //La marca de zona estaba visible
				misZonasMarkersHash.get(zonaModificar.id.toString()).hide(); //pongo la marca en invisible
			//inicializo el form
			hideDiv('newZonaErrorDisplay');
			document.getElementById("newZonaErrorDisplay").innerHTML = "";
			document.getElementById('zonaIdHID').value=zonaModificar.id;
			document.getElementById('zonaArea').innerHTML="0 km&sup2;";
			document.getElementById('descZona').value=zonaModificar.datos;
			document.getElementById('nombreZona').value=zonaModificar.nombre;
			document.getElementById('colorZonaId').value=zonaModificar.color;
			document.getElementById('colorZonaText').style.background='#'+zonaModificar.color;
			if (OBJETIVO == 3)
				document.getElementById('zonaPublicaCHK').checked=false;
				if (zonaModificar.publico==1)
					document.getElementById('zonaPublicaCHK').checked=true;
			//creo los vertices a partir de los puntos que tenemos guardados.
			isNewZona = false;
            for (i=0; i<zonaModificar.PUNTOSLAT.length-1; i++){ //hago lenght-1 porque el ultimo punto es el repetido que cierra el poligono
			    var vert = new GLatLng(parseFloat(zonaModificar.PUNTOSLAT[i]),parseFloat(zonaModificar.PUNTOSLNG[i]));
				zonaAddVertice(null,vert);
				}
			drawNewZona();
			centrarEnPoly(newZonaShape);
			isNewZona = true;
		}
	}


	   /*************************FUNCIONES PARA GUARDAR UNA ZONA************************/
	var reqHandlerSaveMisZonas = null;

	function validarNuevaZona(){
		errorMsg = '';
		countPuntos = newZonaPoints.length;
		desc = document.getElementById("descZona").value;
		nombre = document.getElementById("nombreZona").value;

		if (countPuntos<=3)
			errorMsg += "Debe marcar al menos tres puntos para grabar una zona.<br>";

		if (trim(nombre)!=''){
			if (!_validString(nombre))
				errorMsg += "El campo 'nombre' no acepta caracteres especiales.<br>";
			}
		else
			errorMsg += "El campo 'nombre' es obligatorio.<br>";

		if (trim(desc)!=''){
			if (!_validString(desc))
				errorMsg += "El campo 'descripcion' no acepta caracteres especiales.<br>";
			}

		if (errorMsg == '')
			return true;
		document.getElementById("newZonaErrorDisplay").innerHTML = errorMsg;
		showDiv("newZonaErrorDisplay");
		return false;
	}

	function OnReadyStateChangeSaveMisZonas(){
		ready = reqHandlerSaveMisZonas.readyState;
		if (ready == READY_STATE_COMPLETE) {
			nuevaZonaJSON = reqHandlerSaveMisZonas.responseText.parseJSON();
			if (nuevaZonaJSON.id != -1) {
				misZonasHash.put(nuevaZonaJSON.id.toString(),nuevaZonaJSON);
				alert('Grabacion realizada con exito!');
				if (indexOfArray(misZonasVisiblesId,nuevaZonaJSON.id.toString())==-1) //La zona estaba invisible .:. la marco como visible
					misZonasVisiblesId.push(nuevaZonaJSON.id.toString());
				marker = misZonasMarkersHash.get(nuevaZonaJSON.id.toString());
				if ((marker!=null)&&(marker!='undefined')){ //La marca de zona estaba creada, es una modificacion...
					//remuevo la vieja marca de zona del registro
					misZonasMarkersHash.remove(nuevaZonaJSON.id.toString());
				}
				cleanEstadoNuevaZona();
				refreshViewZonas();
			}
			else{
				document.getElementById('newZonaErrorDisplay').innerHTML = 'Ocurrio un error en la DB al tratar de guardar la zona.'
				showDiv('newZonaErrorDisplay');
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	function guardarZona() {
		hideDiv('newZonaErrorDisplay');
		document.getElementById("newZonaErrorDisplay").innerHTML = "";
		if (validarNuevaZona()){
			es_flota = 0;
			es_publico = 0;
			if (OBJETIVO == 3){
				es_flota=1;
				if(document.getElementById('zonaPublicaCHK').checked)
					es_publico = 1;
			}
			puntosLNG = new Array();
			puntosLAT = new Array();
			for (i=0; i < newZonaPoints.length; i++){
				puntosLNG[i]=newZonaPoints[i].lng().toString().substr(0,11);
				puntosLAT[i]=newZonaPoints[i].lat().toString().substr(0,11);
			}
	    	reqParamMisZonas = "COMMAND=SAVE";
    		reqParamMisZonas += "&ORDERID="+document.getElementById('zonaIdHID').value;
			reqParamMisZonas += "&NOMBRE="+document.getElementById('nombreZona').value;
	    	reqParamMisZonas += "&LATITUDES="+puntosLAT.toString();
			reqParamMisZonas += "&LONGITUDES="+puntosLNG.toString();
    		reqParamMisZonas += "&DATOS="+document.getElementById('descZona').value;
    		reqParamMisZonas += "&FLOTAID="+MOVIL_ID;
			reqParamMisZonas += "&COLOR="+document.getElementById('colorZonaId').value;
			reqParamMisZonas += "&PUBLICO="+es_publico;
			reqParamMisZonas += "&ESFLOTA="+es_flota;
    		autoRefreshFlag = 1;
	    	document.getElementById("busyImg").style.visibility = "visible";
    		if (msie)
        	    reqHandlerSaveMisZonas = new ActiveXObject("Microsoft.XMLHTTP");
	        else
    	        reqHandlerSaveMisZonas = new XMLHttpRequest();
			reqHandlerSaveMisZonas.onreadystatechange = OnReadyStateChangeSaveMisZonas;
	        reqHandlerSaveMisZonas.open("POST", "persistirzona.php", true);
    	    reqHandlerSaveMisZonas.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			reqHandlerSaveMisZonas.send(reqParamMisZonas);
		}
    }

		/*************************FUNCIONES PARA ELIMINAR LAS ZONAS SELECCIONADAS************************/
	var reqHandlerDeleteMisZonas = null;
	var deleteZonaId = null;

	function OnReadyStateChangeDeleteMisZonas(){
		ready = reqHandlerDeleteMisZonas.readyState;
		if (ready == READY_STATE_COMPLETE) {
			deleteResponse = reqHandlerDeleteMisZonas.responseText.parseJSON();
			if (deleteResponse){
				if(deleteZonaId==null){ //se ejecuto con minimenu
				 	ocultarZonasSeleccionadas();
	  			    //ahora remuevo las zonas y las marcas que ya fueron eliminadas de sus respectivos arrays
				 	for (i=0; i<zonasSeleccionadasId.length; i++){
						misZonasHash.remove(zonasSeleccionadasId[i].toString());
					 	if (misZonasMarkersHash.containsKey(zonasSeleccionadasId[i].toString())){
							 map.removeOverlay(misZonasMarkersHash.get(zonasSeleccionadasId[i].toString()));
							 misZonasMarkersHash.remove(zonasSeleccionadasId[i].toString());
					 	}
				 	}
					zonasSeleccionadasId = new Array();
				}
				else{ //se ejecuto desde POPUP MENU
					pos=indexOfArray(zonasSeleccionadasId,deleteZonaId.toString());
				    if (pos!=-1)
						zonasSeleccionadasId.splice(pos,1);
					ocultarZona(deleteZonaId.toString);
					misZonasHash.remove(deleteZonaId.toString());
					if (misZonasMarkersHash.containsKey(deleteZonaId.toString())){
						map.removeOverlay(misZonasMarkersHash.get(deleteZonaId.toString()));
						misZonasMarkersHash.remove(deleteZonaId.toString());
					}

					deleteZonaId = null;
				}
				refreshViewZonas();
			}
			else {
				alert ("Error en consulta a DB: No se pudieron eliminar las zonas seleccionados");
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	function eliminarZonas(zonaId) {
		 deleteZonaId = null;
		 if ((zonasSeleccionadasId.length>0)||(zonaId!=null)){
			conf = confirm('Esta a punto de eliminar la/las zonas seleccionadas. ¿Desea continuar de todas formas?');
			if (conf){
		    	reqParamsMisZonas = "COMMAND=DELETE";
				if (zonaId!=null){
					reqParamsMisZonas += "&ORDERID="+zonaId.toString();
					deleteZonaId = zonaId.toString();
				}
				else
					reqParamsMisZonas += "&ORDERID="+zonasSeleccionadasId.join(",");
    			autoRefreshFlag = 1;
	    		document.getElementById("busyImg").style.visibility = "visible";
	    		if (msie)
    	    	    reqHandlerDeleteMisZonas = new ActiveXObject("Microsoft.XMLHTTP");
	    	    else
    	    	    reqHandlerDeleteMisZonas = new XMLHttpRequest();
	        	reqHandlerDeleteMisZonas.onreadystatechange = OnReadyStateChangeDeleteMisZonas;
		        reqHandlerDeleteMisZonas.open("POST", "persistirzona.php", true);
    		    reqHandlerDeleteMisZonas.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				reqHandlerDeleteMisZonas.send(reqParamsMisZonas);
			}
		 }
		 else
		 	alert ('Debe seleccionar por lo menos una zona para poder realizar esta operacion.');
    }


	/*************************FUNCIONES PARA PUBLICAR/DESPUBLICAR LAS ZONAS SELECCIONADAS************************/
	var reqHandlerPublicarMisZonas = null;
	var publicarZonaId = null;

	function OnReadyStateChangePublicarMisZonas(){
		ready = reqHandlerPublicarMisZonas.readyState;
		if (ready == READY_STATE_COMPLETE) {
			publicarResponse = reqHandlerPublicarMisZonas.responseText.parseJSON();
			if ((publicarResponse!=null)&&(publicarResponse!=-1)&&(publicarResponse!='undefined')){ // se pudo realizar la operacion, retorna 1 si se publico y 0 si se des-publico.
				if(publicarZonaId==null){ //se ejecuto con minimenu
					 //ahora cambio el valor de las zonas por el devuelto (0 o 1)
				 	for (i=0; i<zonasSeleccionadasId.length; i++){
						 if (misZonasHash.containsKey(zonasSeleccionadasId[i].toString()))
					 		 misZonasHash.get(zonasSeleccionadasId[i].toString()).publico=publicarResponse;
				 	}
				}
				else{ // se ejecuto con POPUP MENU
					if (misZonasHash.containsKey(publicarZonaId.toString()))
					 	misZonasHash.get(publicarZonaId.toString()).publico=publicarResponse;
					publicarZonaId = null;
				}
				refreshViewZonas();
			}
			else {
				alert ("Error en consulta a DB: No se pudieron publicar las zonas seleccionadas");
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	function publicarZonas(publicar, zonaId) { //si publicar=true las zonas se publican, caso contrario se des-publican
		 publicarZonaId = null;
		 if ((zonasSeleccionadasId.length>0)||(zonaId!=null)){
			msj = 'Esta a punto de publicar la/las zonas seleccionadas. ¿Desea continuar de todas formas?';
			if (!publicar)
				msj = 'Esta a punto de dejar de publicar la/las zonas seleccionados. ¿Desea continuar de todas formas?';
			conf = confirm(msj);
			if (conf){
				valuePub=0;
				if (publicar)
					valuePub=1;
		    	reqParamsMisZonas = "COMMAND=PUBLICAR";
				if(zonaId!=null){
					reqParamsMisZonas += "&ORDERID="+zonaId.toString();
					publicarZonaId = zonaId.toString();
				}
				else
	    			reqParamsMisZonas += "&ORDERID="+zonasSeleccionadasId.join(",");
				reqParamsMisZonas += "&PUBLICAR="+valuePub;
    			autoRefreshFlag = 1;
	    		document.getElementById("busyImg").style.visibility = "visible";
	    		if (msie)
    	    	    reqHandlerPublicarMisZonas = new ActiveXObject("Microsoft.XMLHTTP");
	    	    else
    	    	    reqHandlerPublicarMisZonas = new XMLHttpRequest();
	        	reqHandlerPublicarMisZonas.onreadystatechange = OnReadyStateChangePublicarMisZonas;
		        reqHandlerPublicarMisZonas.open("POST", "persistirzona.php", true);
    		    reqHandlerPublicarMisZonas.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				reqHandlerPublicarMisZonas.send(reqParamsMisZonas);
			}
		 }
		 else
		 	alert ('Debe seleccionar por lo menos una zona para poder realizar esta operacion.');
    }

	/*************************FUNCIONES PARA CONFIGURAR COMO VISIBLES POR DEFECTO LAS ZONAS SELECCIONADAS************************/
	var reqHandlerDefaultMisZonas = null;

	function OnReadyStateChangeDefaultMisZonas(){
		ready = reqHandlerDefaultMisZonas.readyState;
		if (ready == READY_STATE_COMPLETE) {
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	function defaultZonasSeleccionadas() {
			msj = 'Esta a punto de configurar el/todas las zonas seleccionadas como visible por defecto. ¿Desea continuar de todas formas?';
			conf = confirm(msj);
			if (conf){
		    	reqParamsMisZonas = "COMMAND=CHANGEZONAS";
				reqParamsMisZonas += "&CUENTA="+ UNIQUE_ID;
				if (OBJETIVO == 3)
					reqParamsMisZonas += "&ESFLOTA=1";
				else
					reqParamsMisZonas += "&ESFLOTA=0";
				reqParamsMisZonas += "&ZONASID="+zonasSeleccionadasId.toString();
    			autoRefreshFlag = 1;
	    		document.getElementById("busyImg").style.visibility = "visible";
	    		if (msie)
    	    	    reqHandlerDefaultMisZonas = new ActiveXObject("Microsoft.XMLHTTP");
	    	    else
    	    	    reqHandlerDefaultMisZonas = new XMLHttpRequest();
	        	reqHandlerDefaultMisZonas.onreadystatechange = OnReadyStateChangeDefaultMisZonas;
		        reqHandlerDefaultMisZonas.open("POST", "sections/queryConfig.php", true);
    		    reqHandlerDefaultMisZonas.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				reqHandlerDefaultMisZonas.send(reqParamsMisZonas);
			}
    }




